<?php
/**
 * Created by PhpStorm.
 * User: fengyan
 * Date: 2017/4/8
 * Time: 下午11:30
 */

namespace app\admin\model;

class AdminMember extends BaseModel
{
    /**
     * @var string 主键
     */
    protected $pk = 'id';

    /**
     * 添加时候自动完成
     * @var array
     */
    protected $insert = ['status' => 99, 'reg_ip', 'password'];

    /**
     * 设置创建账号的ip地址
     * @return mixed
     */
    protected function setRegIpAttr()
    {
        return get_client_ip(true);
    }

    /**
     * 设置密码
     * @param $password
     * @return string
     */
    protected function setPasswordAttr($password)
    {
        return self::getEncryptPassword($password);
    }


    /**
     * 获取加密后的密码字符串
     * @param string $password
     * @return string
     */
    public static function getEncryptPassword($password)
    {
        if (empty($password)) {
            return '';
        }

        return md5(sha1($password) . config('data_auth_key'));
    }

    /**
     * 根据邮箱地址获取用户信息
     * @param $email
     * @return array|false|\PDOStatement|string|\think\Model
     */
    public function getUserinfoByEmail($email)
    {
        return $this->where('email', $email)->find();
    }

    /**
     * 设置登陆session信息
     * @param array $userinfo
     * @return bool
     */
    public function autoLogin(array $userinfo)
    {
        unset($userinfo['password']);

        $this->save([
            'last_login_time' => time(),
            'last_login_ip' => get_client_ip(1),
        ], ['id'=>$userinfo['id']]);

        $userinfo['uid'] = $userinfo['id'];
        session('user_auth', $userinfo);
        session('user_auth_sign', data_auth_sign($userinfo));
        return true;
    }

    /**
     * 退出登录
     * @return bool
     */
    public function autoLogout()
    {
        session('user_auth', null);
        session('user_auth_sign', null);
        //  清除菜单的session值
        foreach (session('main_menu_list') as $key=>$value) {
            session('siderbar_menu_list_'.$value['root_id'], null);
        }
        session('main_menu_list', null);
        return true;
    }


    /**
     * 检测用户是否登录
     * @return integer 0-未登录，大于0-当前登录用户ID
     */
    public static function isLogin()
    {
        $user = session('user_auth');
        if (empty($user)) {
            return 0;
        }

        return session('user_auth_sign') == data_auth_sign($user) ? $user['uid'] : 0;
    }

    /**
     * 检测是否是最高权限管理员
     * @param int $uid
     * @return bool|null
     */
    public static function isAdministrator($uid = 0)
    {
        if (empty($uid)) {
            $uid = self::isLogin();
        }

        if (empty($uid)) {
            return null;
        }

        if (config('user_administrator') != $uid) {
            return false;
        }

        return true;
    }

}